Allow domain config file to specify credit-scheduler parameters.
authorEwan Mellor <ewan@xensource.com>
Sat, 28 Oct 2006 17:08:43 +0000 (18:08 +0100)
committerEwan Mellor <ewan@xensource.com>
Sat, 28 Oct 2006 17:08:43 +0000 (18:08 +0100)
Imported from xen-unstable 11864:babae8ac84b95ff4fbc1cfe4ac27c59ceaba7e38,
with conflict resolution by Ewan Mellor.

Signed-off-by: Masami Watanabe <masami.watanabe@jp.fujitsu.com>
tools/python/xen/xend/XendConfig.py
tools/python/xen/xend/XendDomain.py
tools/python/xen/xend/XendDomainInfo.py
tools/python/xen/xm/create.py

index 0787ebd79fd758b57fcad33f47a4a8da4d3f39b7..a911a642fec816d55d288b6389bf442dcbc32a53 100644 (file)
@@ -239,7 +239,8 @@ DEFAULT_CONFIGURATION = (
     ('on_xend_stop', lambda info: 'ignore'),
 
     ('cpus',         lambda info: []),
-    ('cpu_weight',   lambda info: 1.0),
+    ('cpu_cap',      lambda info: 0),
+    ('cpu_weight',   lambda info: 256),
     ('vcpus',        lambda info: DEFAULT_VCPUS(info)),
     ('online_vcpus', lambda info: info['vcpus']),
     ('max_vcpu_id',  lambda info: info['vcpus']-1),
index a460f2e0c337646360f92145f06b30f65248edea..99a2c12e838b9614ad4aacdb773d37aca754ca77 100644 (file)
@@ -772,6 +772,9 @@ class XendDomain:
         try:
             dominfo = XendDomainInfo.create(config)
             self._add_domain(dominfo)
+            self.domain_sched_credit_set(dominfo.getDomid(),
+                                         dominfo.getWeight(),
+                                         dominfo.getCap())
             return dominfo
         finally:
             self.domains_lock.release()
index 26dc09b737f5d6a5a08e08dc24d4d5f9cc9793d4..73c8bb9a4d0f2df1ba908d349cba700e33d445e3 100644 (file)
@@ -79,7 +79,8 @@ ROUNDTRIPPING_CONFIG_ENTRIES = [
     ('uuid',            str),
     ('vcpus',           int),
     ('vcpu_avail',      int),
-    ('cpu_weight',      float),
+    ('cpu_cap',         int),
+    ('cpu_weight',      int),
     ('memory',          int),
     ('shadow_memory',   int),
     ('maxmem',          int),
@@ -828,6 +829,12 @@ class XendDomainInfo:
     def getResume(self):
         return "%s" % self.info['resume']
 
+    def getCap(self):
+        return self.info['cpu_cap']
+
+    def getWeight(self):
+        return self.info['cpu_weight']
+
     def setResume(self, state):
         self.info['resume'] = state
 
index 67bc9f3602198cef61a9dad5b4d6cb85ecdc194f..eadd79891a3c62e1efd6163fb5da8591a3092771 100644 (file)
@@ -189,10 +189,14 @@ gopts.var('vcpus', val='VCPUS',
           fn=set_int, default=1,
           use="# of Virtual CPUS in domain.")
 
+gopts.var('cpu_cap', val='CAP',
+          fn=set_int, default=None,
+          use="""Set the maximum amount of cpu.
+          CAP is a percentage that fixes the maximum amount of cpu.""")
+
 gopts.var('cpu_weight', val='WEIGHT',
-          fn=set_float, default=None,
-          use="""Set the new domain's cpu weight.
-          WEIGHT is a float that controls the domain's share of the cpu.""")
+          fn=set_int, default=None,
+          use="""Set the cpu time ratio to be allocated to the domain.""")
 
 gopts.var('restart', val='onreboot|always|never',
           fn=set_value, default=None,
@@ -705,6 +709,8 @@ def make_config(vals):
         config.append(['cpu', vals.cpu])
     if vals.cpus is not None:
         config.append(['cpus', vals.cpus])
+    if vals.cpu_cap is not None:
+        config.append(['cpu_cap', vals.cpu_cap])
     if vals.cpu_weight is not None:
         config.append(['cpu_weight', vals.cpu_weight])
     if vals.blkif: